POV-Ray : Newsgroups : povray.programming : 3D Trig Help for Bonehead needed : Re: 3D Trig Help for Bonehead needed Server Time
28 Jul 2024 14:28:44 EDT (-0400)
  Re: 3D Trig Help for Bonehead needed  
From: Ken Cecka
Date: 13 Sep 2000 23:58:03
Message: <39C04B05.969385E2@alumni.washington.edu>
First let me rephrase your question:

You have a generic branch aimed in a particular direction.  You want to
automatically reorient it to match branches on your tree.  The actual
position of the branches doesn't really enter into the picture here
because that is just translation, so we can simplify the problem to
changing the orientation.  Now, lets say your generic branch starts at
the origin, and ends at the point <Ax,Ay,Az>.  And you want to re-orient
it so that it ends at <Bx,By,Bz>.  Lets refer to these points as
vectors, A and B, and make one more simplification, that A and B are the
same length.

If this sounds like it describes what you want to do, it's the same
question I asked several years back, and John VanSickle provided a great
solution using Pov's generic matrix transforms.  He describes it on his
web page on matrices at

http://users.erols.com/vansickl/matrix.htm
(scroll down to the section titled "Rotating from one vector to
another")

I never muddled through it enought to understand the math behind it, but
it worked great for me at the time.

Hope that helps (credit goes to John),

Ken

Rick Gutleber wrote:
> 
> I've got a simple question that's bugged me for years.  The answers got to
> be simple, but I just can't figure it out.
> 
> I'm writing a C++ program to programmatically generate a Christmas tree and
> I'm trying to put needles on the branches.  I have the start and end point
> of the branch so I figured I would create the needles as if the branch
> started at the origin and pointed straight up and then just translate and
> rotate the union of the resulting needles so they actually appear on the
> branch in the scene.  This translatation/rotation can occur in my C++ code
> or the generated POV script, whichever is easier.
> 
> I've got an arbitary unit vector that reflects the orientation of the branch
> (from VNormalize( ) in POV, or the good old Pythagorean distance function in
> my C++ code), how do I turn that into an equivalent rotate < x, y, z >
> statement so the needles end up on the branch?  I'm sure it's just the right
> combination of atan( ) calls, but the details elude my addled brain.
> 
> Thanks for the help!
> 
> Rick
> ric### [at] hiscom


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.